Template xd75re

Compilación

Para compilar el firmware de este teclado usamos lo siguiente:

Podemos usar dos comandos distintos para compilar y flashear el firmware (básicamente los dos hacen los mismo);

El segundo comando tenemos que ejecutarlo desde la carpeta del qmk_firmware que es donde está el makefile

Config

Para configurar las velocidades del raton editamos el archivo config.h dentro de la carpeta del teclado incluyendo lo siguiente al final:

#define MK_3_SPEED
#define MK_C_OFFSET_0 3
#define MK_C_OFFSET_1 7
#define MK_C_OFFSET_2 20
#define MK_C_INTERVAL_2 10
#define MK_W_OFFSET_0 1
#define MK_W_INTERVAL_0 100
#define MK_W_OFFSET_1 2
#define MK_W_INTERVAL_1 80
#define MK_W_OFFSET_2 6
#define MK_W_INTERVAL_2 5
Template

Este archivo debe de estar colocado en: qmk_firmware/keyboards/xiudi/xd75/keymaps/Alfa-Omega/keymap.c

/* Copyright 2017 Wunder
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include QMK_KEYBOARD_H

enum custom_keycodes {
    MVKBD = SAFE_RANGE,
    MVNAV,
    MVMOUSE,
    NAVBACK,
    NAVFRNT,
    SHDESK,
    ALTWIN,
    ALTTABR,
    ALTTABL,
    CRTTAB,
    RUNTER,
    RUNGB,
    RUNCOM,
    SOKEY,
    SELECT,
    CLIPB,
    COPY,
    PASTE,
    CUTK,
    UNDO,
    DELETE,
    CLOSETAB,
    NEWTAB,
    INCOG,
    ALTF4,
    APP1,
    APP2,
    APP3,
    APP4,
    APP5,
    APP6,
    APP7,
    S_LANGBRT,
    S_RANGBRT,
    S_LCURLYBRT,
    S_RCURLYBRT,
    S_LSQBRT,
    S_RSQBRT,
    S_LPAREN,
    S_RPAREN,
    S_LQMARK,
    S_RQMARK,
    S_SLSH,
    S_EQL,
    S_QUOT,
    S_AT,
    S_ASTRK,
    S_DOLLAR,
    S_PERC,
    S_HASTG,
    S_ACFL,
    S_AMP,
    S_EXCL,
    S_NFEM,
    S_BSLSH,
    S_VGL,
    S_PIPE
};

enum layer_names {
    _KB,
    _NAV,
    _MOUSE,
    _NAVF,
    _NAVFF,
    _NUMBERS,
    _SYMBOLS,
    _MED
};

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {
    case MVKBD:
        if (record->event.pressed) {
            // when keycode is pressed
            layer_move(0);
        } else {
            // when keycode is released
        }
        break;

    case MVNAV:
        if (record->event.pressed) {
            layer_move(1);
        } else {
        }
        break;

    case MVMOUSE:
        if (record->event.pressed) {
            layer_move(_MOUSE);
        } else {
        }
        break;

    case NAVBACK:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_LEFT));
        } else {
            clear_keyboard();
        }
        break;

    case NAVFRNT:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_RIGHT));
        } else {
            clear_keyboard();
        }
        break;

    case SHDESK:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LGUI) SS_TAP(X_D));
        } else {
            clear_keyboard();
        }
        break;

    case ALTWIN:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_TAB));
        } else {
            clear_keyboard();
        }
        break;

    case ALTTABR:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LCTL) SS_TAP(X_TAB));
        } else {
            clear_keyboard();
        }
        break;

    case ALTTABL:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LCTL) SS_DOWN(X_LSFT) SS_TAP(X_TAB));
        } else {
            clear_keyboard();
        }
        break;

    case CRTTAB:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LCTL) SS_DOWN(X_T));
        } else {
            clear_keyboard();
        }
        break;

    case RUNTER:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LCTL) SS_DOWN(X_LALT) SS_DOWN(X_T));
        } else {
            clear_keyboard();
        }
        break;

    case RUNGB:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LCTL) SS_DOWN(X_LALT) SS_DOWN(X_B));
        } else {
            clear_keyboard();
        }
        break;

    case RUNCOM:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LALT) SS_DOWN(X_F2));
            layer_move(0);
        } else {
            clear_keyboard();
        }
        break;

    case SOKEY:
        if (record->event.pressed) {
            layer_move(0);
            SEND_STRING(SS_DOWN(X_LGUI));
        } else {
            clear_keyboard();
        }
        break;

    case SELECT:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LCTL) SS_DOWN(X_LSFT));
        } else {
            clear_keyboard();
        }
        break;

    case CLIPB:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LGUI) SS_DOWN(X_V));
        } else {
            clear_keyboard();
        }
        break;

    case COPY:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LCTL) SS_DOWN(X_C));
        } else {
            clear_keyboard();
        }
        break;

    case PASTE:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LCTL) SS_DOWN(X_V));
        } else {
            clear_keyboard();
        }
        break;

    case CUTK:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LCTL) SS_DOWN(X_X));
        } else {
            clear_keyboard();
        }
        break;

    case UNDO:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LCTL) SS_DOWN(X_Z));
        } else {
            SEND_STRING(SS_UP(X_LCTL) SS_UP(X_Z));
        }
        break;

    case DELETE:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_BSPC));
        } else {
            clear_keyboard();
            layer_move(0);
        }
        break;

    case CLOSETAB:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LCTL) SS_DOWN(X_W));
        } else {
            clear_keyboard();
        }
        break;

    case NEWTAB:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LCTL) SS_DOWN(X_T));
        } else {
            clear_keyboard();
        }
        break;

    case INCOG:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LCTL) SS_DOWN(X_LSFT) SS_DOWN(X_N));
        } else {
            clear_keyboard();
        }
        break;

    case ALTF4:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LALT) SS_DOWN(X_F4));
        } else {
            clear_keyboard();
        }
        break;

    case APP1:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LGUI) SS_DOWN(X_1));
        } else {
            clear_keyboard();
        }
        break;

    case APP2:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LGUI) SS_DOWN(X_2));
        } else {
            clear_keyboard();
        }
        break;

    case APP3:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LGUI) SS_DOWN(X_3));
        } else {
            clear_keyboard();
        }
        break;


    case APP4:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LGUI) SS_DOWN(X_4));
        } else {
            clear_keyboard();
        }
        break;


    case APP5:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LGUI) SS_DOWN(X_5));
        } else {
            clear_keyboard();
        }
        break;


    case APP6:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LGUI) SS_DOWN(X_6));
        } else {
            clear_keyboard();
        }
        break;


    case APP7:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LGUI) SS_DOWN(X_7));
        } else {
            clear_keyboard();
        }
        break;


        /*---------------SYMBOLS----------------*/

    case S_RANGBRT:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LSFT) SS_DOWN(X_NUBS));
        } else {
            clear_keyboard();
        }
        break;

    case S_LCURLYBRT:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_RALT) SS_DOWN(X_QUOT));
        } else {
            clear_keyboard();
        }
        break;

    case S_RCURLYBRT:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_RALT) SS_DOWN(X_BSLS));
        } else {
            clear_keyboard();
        }
        break;

   case S_LSQBRT:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_RALT) SS_DOWN(X_LBRC));
        } else {
            clear_keyboard();
        }
        break;

    case S_RSQBRT:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_RALT) SS_DOWN(X_RBRC));
        } else {
            clear_keyboard();
        }
        break;

    case S_LPAREN:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LSFT) SS_DOWN(X_8));
        } else {
            clear_keyboard();
        }
        break;

    case S_RPAREN:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LSFT) SS_DOWN(X_9));
        } else {
            clear_keyboard();
        }
        break;

    case S_LQMARK:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LSFT) SS_DOWN(X_EQL));
        } else {
            clear_keyboard();
        }
        break;

    case S_RQMARK:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LSFT) SS_DOWN(X_MINS));
        } else {
            clear_keyboard();
        }
        break;


    case S_SLSH:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LSFT) SS_DOWN(X_7));
        } else {
            clear_keyboard();
        }
        break;

    case S_EQL:
        if (record->event.pressed) {
            SEND_STRING(SS_UP(X_RALT));
            SEND_STRING(SS_DOWN(X_LSFT) SS_DOWN(X_0));
        } else {
            clear_keyboard();
        }
        break;

    case S_QUOT:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LSFT) SS_DOWN(X_2));
        } else {
            clear_keyboard();
        }
        break;

    case S_AT:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_RALT) SS_DOWN(X_2));
        } else {
            clear_keyboard();
        }
        break;

    case S_ASTRK:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LSFT) SS_DOWN(X_RBRC));
        } else {
            clear_keyboard();
        }
        break;

    case S_DOLLAR:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LSFT) SS_DOWN(X_4));
        } else {
            clear_keyboard();
        }
        break;

    case S_PERC:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LSFT) SS_DOWN(X_5));
        } else {
            clear_keyboard();
        }
        break;

    case S_HASTG:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_RALT) SS_DOWN(X_3));
        } else {
            clear_keyboard();
        }
        break;

    case S_ACFL:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LSFT) SS_DOWN(X_LBRC));
        } else {
            clear_keyboard();
        }
        break;

    case S_AMP:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LSFT) SS_DOWN(X_6));
        } else {
            clear_keyboard();
        }
        break;

    case S_EXCL:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LSFT) SS_DOWN(X_1));
        } else {
            clear_keyboard();
        }
        break;

    case S_NFEM:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_LSFT) SS_DOWN(X_GRV));
        } else {
            clear_keyboard();
        }
        break;

    case S_BSLSH:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_RALT) SS_DOWN(X_GRV));
        } else {
            clear_keyboard();
        }
        break;

    case S_VGL:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_RALT) SS_DOWN(X_4));
        } else {
            clear_keyboard();
        }
        break;

    case S_PIPE:
        if (record->event.pressed) {
            SEND_STRING(SS_DOWN(X_RALT) SS_DOWN(X_1));
        } else {
            clear_keyboard();
        }
        break;


    }
  return true;
};



const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    /* KB
     * .--------------------------------------------------------------------------------------------------------------------------------------.
     * |        | APP1   | APP2   | APP3   | ,      | ESC    | APP4   |KC_VOLD |KC_VOLU | APP5   | APP6   | .      | DEL    | APP7   |PRTSCCR |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
     * |  CAPS  | '      | Q      | W      | E      | R      | T      | RUNCOM | LGUI   | Y      | U      | I      | O      | P      | '      |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
     * | SHDESK | TAB    | A      | S      | D      | F      | G      |MVMOUSE | RUNTER | H      | J      | K      | L      | -      | LCTRL  |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
     * | LSHIFT |NUMBERS | Z      | X      | C      | V      | B      | KC_APP | RUNGB  | N      | M      | =      | MVNAV  | Ñ      | LALT   |
     * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------|
     * |        | LCTRL  | LGUI   | MEDIA  | LALT   |KC_LSFT | BACKSP |        | TAB    | ENTER  | SPACE  | SYMB   | RALT   | RGUI   | RCTRL  |
     * '--------------------------------------------------------------------------------------------------------------------------------------'
     */
    [_KB]    = LAYOUT_ortho_5x15( /* QWERTY */
          KC_NO,    APP1, APP2,    APP3,  KC_COMM,     KC_ESC,    APP4, KC_VOLD, KC_VOLU,    APP5,     APP6,      KC_DOT,  KC_DEL,    APP7,  KC_PSCR,
        KC_CAPS, KC_QUOT, KC_Q,    KC_W,     KC_E,       KC_R,    KC_T,  RUNCOM, KC_LGUI,    KC_Y,     KC_U,        KC_I,    KC_O,    KC_P,  KC_QUOT,
         SHDESK,  KC_TAB, KC_A,    KC_S,     KC_D,       KC_F,    KC_G, MVMOUSE,  RUNTER,    KC_H,     KC_J,        KC_K,    KC_L, KC_SLSH,  KC_LCTL,
   KC_LSFT, MO(_NUMBERS), KC_Z,    KC_X,     KC_C,       KC_V,    KC_B,  KC_APP,   RUNGB,    KC_N,     KC_M,       S_EQL,   MVNAV, KC_SCLN,  MO(_NUMBERS),
          KC_NO, KC_LCTL, KC_LGUI, TG(_MED), KC_LALT, KC_LSFT, KC_BSPC,   KC_NO,  KC_TAB, KC_PENT,   KC_SPC,MO(_SYMBOLS), KC_RALT, KC_RGUI,  KC_RCTL
    ),

    /* NAV
     * .--------------------------------------------------------------------------------------------------------------------------------------.
     * |        | APP1   | APP2   | APP3   |        |  ESC   | APP4   | VOL_D  | VOL_U  | APP5   | APP6   |        |KC_TRNS | APP7   |KC_TRNS |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
     * |        |        | ALTF4  |CLOSETAB|ALTTABL |ALTTABR | NEWTAB | RUNCOM | SOKEY  |        |        | UP     | PG_UP  |        |        |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
     * |KC_TRNS | TAB    | ALTWIN |        | LCTL   | LSHIFT |        |MVMOUSE |        | HOME   | LEFT   | DOWN   | RIGHT  | END    | MVKBD  |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
     * |SELECT  |NUMBERS | UNDO   | CUT    | COPY   | PASTE  | CLIPB  | KC_APP |        | INCOG  |PG_DOWN |        |        |        |NUMBERS |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
     * | LCTL   | LCTRL  |        |        | LALT   | MVKBD  | DELETE |        |        | ENTER  |KC_TRNS | SYMB   |        |        |        |
     * '--------------------------------------------------------------------------------------------------------------------------------------'
     */

    [_NAV] = LAYOUT_ortho_5x15( /* FUNCTION */
       KC_NO,   APP1,    APP2,      APP3,    KC_NO,  KC_ESC,   APP4, KC_VOLD,   KC_VOLU,    APP5,    APP6,   KC_NO,  KC_TRNS,  APP7, KC_TRNS,
       KC_NO,  KC_NO,   ALTF4,  CLOSETAB,  ALTTABL, ALTTABR, NEWTAB,  RUNCOM,     SOKEY,   KC_NO,   KC_NO,   KC_UP,  KC_PGUP, KC_NO,   KC_NO,
     KC_TRNS, KC_TAB,  ALTWIN,     KC_NO,  KC_LCTL, KC_LSFT,  KC_NO, MVMOUSE,     KC_NO, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END,  MVKBD,
 SELECT, MO(_NUMBERS),   UNDO,      CUTK,     COPY,   PASTE,  CLIPB,  KC_APP,     KC_NO,   INCOG, KC_PGDN,   KC_NO,    KC_NO, KC_NO,   MO(_NUMBERS),
      KC_LCTL,KC_LCTL,  KC_NO,  TG(_MED),  KC_LALT,   MVKBD, DELETE,   KC_NO,    KC_TAB, KC_PENT, KC_TRNS, MO(_SYMBOLS), KC_NO, KC_NO, KC_NO
    ),


    /* NUMBERS
     * .--------------------------------------------------------------------------------------------------------------------------------------.
     * |        |        |        |        | ,      |        |        |        |        |        |        | .      |        |        |        |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
     * |        |        | F1     | F2     | F3     | F4     | F5     |        |        |        | 7      | 8      | 9      |        |        |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
     * |        |        | F5     | F6     | F7     | F8     |        |        |        |        | 4      | 5      | 6      |        | CTRL   |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
     * |        |        | F9     | F10    | F11    | F12    |        |        |        | 0      | 1      | 2      | 3      |        |        |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
     * |        | CTRL   |        |        | ALT    | SHIFT  |KC_TRNS |        |KC_TRNS |KC_TRNS |        |        |        |        |        |
     * '--------------------------------------------------------------------------------------------------------------------------------------'
     */

    [_NUMBERS] = LAYOUT_ortho_5x15(
        KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_COMM, KC_NO,   KC_NO,   KC_NO,      KC_NO,   KC_NO,   KC_NO,  KC_DOT,   KC_NO,   KC_NO,   KC_NO,
        KC_NO,   KC_NO,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_NO,      KC_NO,   KC_NO,    KC_7,    KC_8,    KC_9,   KC_NO,   KC_NO,
        KC_NO,   KC_NO,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_NO,   KC_NO,      KC_NO,   KC_NO,    KC_4,    KC_5,    KC_6,   KC_NO, KC_LCTL,
        KC_NO,   KC_NO,   KC_F9,  KC_F10,  KC_F11,  KC_F12,   KC_NO,   KC_NO,      KC_NO,    KC_0,    KC_1,    KC_2,    KC_3,   KC_NO, KC_TRNS,
        KC_NO, KC_LCTL,   KC_NO,   KC_NO, KC_LALT, KC_LSFT, KC_TRNS,   KC_NO,    KC_TRNS, KC_TRNS,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO
    ),


    /* MOUSE
     * .--------------------------------------------------------------------------------------------------------------------------------------.
     * | RESET  | APP1   | APP2   | APP3   |        |  ESC   | APP4   | VOL_D  | VOL_U  | APP5   | APP6   |        |KC_TRNS | APP7   |KC_TRNS |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
     * |        |        | ALTF4  |CLOSETAB|ALTTABL |ALTTABR | NEWTAB | RUNCOM |SOKEY   | M_BTN2 | M_BTN1 | M_UP   | M_WH_U |        |        |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
     * |KC_TRNS | ALTWIN | ACL_0  | ACL_1  | ACL_2  | M_BTN1 | M_BTN2 |        |        |NAVBACK | M_LEFT | M_DOWN |M_RIGHT |NAVFRNT | MVKBD  |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
     * |        |        |        |        |        |        |        |        |        | INCOG  | M_WH_D |        | MVNAV  |        |KC_TRNS |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
     * |        |        |        |        |        | MVKBD  |KC_TRNS |        |KC_TRNS | ENTER  |KC_TRNS |        |        |        |        |
     * '--------------------------------------------------------------------------------------------------------------------------------------'
     */
    [_MOUSE] = LAYOUT_ortho_5x15( /* FUNCTION */
          RESET,   APP1,   APP2,    APP3,   KC_NO,  KC_ESC,    APP4, KC_VOLD,   KC_VOLU,    APP5,    APP6,   KC_NO, KC_TRNS,    APP7, KC_TRNS,
          KC_NO,  KC_NO,  ALTF4,CLOSETAB, ALTTABL, ALTTABR,  NEWTAB,  RUNCOM,     SOKEY, KC_BTN2, KC_BTN1, KC_MS_U, KC_WH_U,   KC_NO,   KC_NO,
        KC_TRNS, ALTWIN,KC_ACL0, KC_ACL1, KC_ACL2, KC_BTN1, KC_BTN2,   KC_NO,     KC_NO, NAVBACK, KC_MS_L, KC_MS_D, KC_MS_R, NAVFRNT,   MVKBD,
          KC_NO,  KC_NO,  KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,     KC_NO,   INCOG, KC_WH_D,   KC_NO,   MVNAV,   KC_NO, KC_TRNS,
          KC_NO,  KC_NO,  KC_NO,TG(_MED),   KC_NO,   MVKBD, KC_TRNS,   KC_NO,   KC_TRNS, KC_PENT, KC_TRNS,   KC_NO,   KC_NO,   KC_NO,   KC_NO
    ),


    /* Symbols
     * .--------------------------------------------------------------------------------------------------------------------------------------.
     * |        |        |   ª    |   º    |   @    |        |        |        |        |        |        |        |        |        |        |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
     * |        |        |   ¿    |   ?    |   <    |   >    |   $    |        |        |        |   ^    |   (    |   )    |   ~    |        |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
     * |        |        |   +    |   /    |   {    |   }    |   =    |        |        |        |   &    |   "    |   '    |   \    |        |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
     * |        |        |   `    |   *    |   [    |   ]    |   %    |        |        |        |   #    |   |    |   !    |        |        |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
     * |        |        |        |        |        |        |        |        |        |        |        |KC_TRNS |        |        |        |
     * '--------------------------------------------------------------------------------------------------------------------------------------'
     */
    [_SYMBOLS] = LAYOUT_ortho_5x15( /* FUNCTION */
          KC_NO, KC_NO,   S_NFEM,   KC_GRV,        S_AT,       KC_NO,    KC_NO, KC_NO,  KC_NO, KC_NO,  KC_NO,    KC_NO,    KC_NO,   KC_NO,   KC_NO,
          KC_NO, KC_NO, S_LQMARK, S_RQMARK,     KC_NUBS,   S_RANGBRT, S_DOLLAR, KC_NO,  KC_NO, KC_NO, S_ACFL, S_LPAREN, S_RPAREN,   S_VGL,   KC_NO,
          KC_NO, KC_NO,  KC_RBRC,   S_SLSH, S_LCURLYBRT, S_RCURLYBRT,    S_EQL, KC_NO,  KC_NO, KC_NO,  S_AMP,   S_QUOT,  KC_MINS, S_BSLSH,   KC_NO,
          KC_NO, KC_NO,  KC_LBRC,  S_ASTRK,    S_LSQBRT,    S_RSQBRT,   S_PERC, KC_NO,  KC_NO, KC_NO,S_HASTG,   S_PIPE,   S_EXCL,   KC_NO,   KC_NO,
          KC_NO, KC_NO,    KC_NO,    KC_NO,       KC_NO,       KC_NO,    KC_NO, KC_NO,  KC_NO, KC_NO,  KC_NO,  KC_TRNS,    KC_NO,   KC_NO,   KC_NO
    ),

    /* MEDIA
     * .--------------------------------------------------------------------------------------------------------------------------------------.
     * |        |        |        |        |        |        |        |KC_VOLD |KC_VOLU |        |        |        |        |        |        |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
     * |        |        |RGB_HUI |RGB_SAI |RGB_VAI |RGB_SPI |        | RUNCOM | SOKEY  |        |        |  STOP  | VOLU   |        |        |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
     * |        |        |RGB_HUD |RGB_SAD |RGB_VAD |RGB_SPD |        |MVMOUSE |        |        | PREV   |  PLAY  | NEXT   |        |        |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
     * |        |        |RGB_TOG |RGB_MOD |RGB_RMOD|        |        |        |        |        | VOLD   |        |        |        | MVKBD  |
     * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
     * |        |        |        |        |        | MVKBD  |        | MVNAV  |        |        | MUTE   |        |        |        |        |
     * '--------------------------------------------------------------------------------------------------------------------------------------'
     */
    [_MED] = LAYOUT_ortho_5x15( /* FUNCTION */
          KC_NO, KC_NO,   KC_NO,    KC_NO,   KC_NO,   KC_NO,   KC_NO, KC_VOLD, KC_VOLU,   KC_NO,    KC_NO,    KC_NO,   KC_NO,   KC_NO,   KC_NO,
          KC_NO, KC_NO, RGB_HUI, RGB_SAI,  RGB_VAI, RGB_SPI,   KC_NO,  RUNCOM,   SOKEY,   KC_NO,    KC_NO,  KC_MSTP, KC_VOLU,   KC_NO,   KC_NO,
          KC_NO, KC_NO, RGB_HUD, RGB_SAD,  RGB_VAD, RGB_SPD,   KC_NO, MVMOUSE,   KC_NO,   KC_NO,  KC_MPRV,  KC_MPLY, KC_MNXT,   KC_NO,   KC_NO,
          KC_NO, KC_NO, RGB_TOG, RGB_MOD, RGB_RMOD,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,  KC_VOLD,    KC_NO,   KC_NO,   KC_NO,   MVKBD,
          KC_NO, KC_NO,   KC_NO,   KC_NO,    KC_NO,   MVKBD,   KC_NO,   MVNAV,   KC_NO,   KC_NO,  KC_MUTE,    KC_NO,   KC_NO,   KC_NO,   KC_NO
    )
};
Tags

QMK | xd75re | keymap